# numpy ndarray.shape .ndim .itemsize .flags


import numpy as np

# ndarray.shape
# 这一数组属性返回一个包含数组维度的元组，它也可以用于调整数组大小。
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)  # (2, 3)
print()

# 调整数组大小
a = np.array([[1, 2, 3], [4, 5, 6]])
a.shape = (3, 2)
print(a)  # [[1, 2], [3, 4], [5, 6]]
print()

# 通过reshape函数来调整数组大小
a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.reshape(3, 2)
print(b)  # [[1, 2], [3, 4], [5, 6]]
print()

# ndarray.ndim
# 这一数组属性返回数组的维数。

# 等间隔数字的数组
a = np.arange(24)
print(a)  # [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
print(a.ndim)  # 1
print()
b = a.reshape(2, 4, 3)  # 2组，4行，3列
print(b)
print(b.ndim)  # 3
print()

# numpy.itemsize
# 这一数组属性返回数组中每个元素的字节单位长度。
a = np.array([1, 2, 3, 4, 5], dtype=np.int8)  # 数组的 dtype 为 int8(一字节)
print(a.itemsize)
a = np.array([1, 2, 3, 4, 5], dtype=np.int16)  # 数组的 dtype 为 int8(一字节)
print(a.itemsize)
print()


# numpy.flags
# ndarray对象拥有以下属性。这个函数返回了它们的当前值。

# 展示当前标志
a = np.array([1, 2, 3, 4, 5])
print(a.flags)
"""
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
"""
